package com.kgc.kmall.managerservice.service.impl;

import com.kgc.kmall.bean.*;
import com.kgc.kmall.managerservice.mapper.PmsBaseAttrInfoMapper;
import com.kgc.kmall.managerservice.mapper.PmsBaseAttrValueMapper;
import com.kgc.kmall.service.AttrService;

import org.apache.dubbo.common.utils.StringUtils;
import org.apache.dubbo.config.annotation.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Set;

@Service
public class AttrServiceImpl implements AttrService {
    @Resource
    PmsBaseAttrInfoMapper pmsBaseAttrInfoMapper;
    @Resource
    PmsBaseAttrValueMapper pmsBaseAttrValueMapper;
    @Override
    public List<PmsBaseAttrInfo> attrInfoList(Long catalog3Id) {
        PmsBaseAttrInfoExample example=new PmsBaseAttrInfoExample();
        PmsBaseAttrInfoExample.Criteria criteria=example.createCriteria();
        criteria.andCatalog3IdEqualTo(catalog3Id);
        List<PmsBaseAttrInfo> pmsBaseAttrInfos = pmsBaseAttrInfoMapper.selectByExample(example);

        for (PmsBaseAttrInfo pmsBaseAttrInfo : pmsBaseAttrInfos) {
            PmsBaseAttrValueExample example1=new PmsBaseAttrValueExample();
            PmsBaseAttrValueExample.Criteria criteria1 = example1.createCriteria();
            criteria1.andAttrIdEqualTo(pmsBaseAttrInfo.getId());
            List<PmsBaseAttrValue> pmsBaseAttrValues = pmsBaseAttrValueMapper.selectByExample(example1);
            pmsBaseAttrInfo.setAttrValueList(pmsBaseAttrValues);
        }
        return pmsBaseAttrInfos;
    }

    @Override
    public int saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo) {
        int i=0;
        if (pmsBaseAttrInfo.getId()==null){
            i=pmsBaseAttrInfoMapper.insert(pmsBaseAttrInfo);
        }else{
            i=pmsBaseAttrInfoMapper.updateByPrimaryKeySelective(pmsBaseAttrInfo);
        }
        //批量删除原属性值
        PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
        PmsBaseAttrValueExample.Criteria criteria=example.createCriteria();
        criteria.andAttrIdEqualTo(pmsBaseAttrInfo.getId());
        i=pmsBaseAttrValueMapper.deleteByExample(example);
        //批量添加新属性值
        if (pmsBaseAttrInfo.getAttrValueList().size()>0){
           i=pmsBaseAttrValueMapper.insertBatch(pmsBaseAttrInfo.getId(),pmsBaseAttrInfo.getAttrValueList());
        }
        return i;
    }


    @Override
    public List<PmsBaseAttrValue> getAttrValueList(Long attrId) {
        PmsBaseAttrValueExample example=new PmsBaseAttrValueExample();
        PmsBaseAttrValueExample.Criteria criteria=example.createCriteria();
        criteria.andAttrIdEqualTo(attrId);
        List<PmsBaseAttrValue> pmsBaseAttrValues = pmsBaseAttrValueMapper.selectByExample(example);
        return pmsBaseAttrValues;
    }

    @Override
    public List<PmsBaseAttrInfo> selectAttrInfoValueListByValueId(Set<Long> valueIds) {
        StringBuffer stringBuffer=new StringBuffer();
        String str="";
        for (Long valueId : valueIds) {
            stringBuffer.append(valueId+",");
        }if (stringBuffer.length()>0){
            str=stringBuffer.substring(0,stringBuffer.length()-1);
        }else {
            str="-1";
        }
        List<PmsBaseAttrInfo> infoList = pmsBaseAttrInfoMapper.selectAttrInfoValueListByValueId(str);
        return infoList;

    }
}
